Several data processing systems and applications can simultaneously use a data channel to send and receive data to and from other data processing systems. A variety of devices facilitates such data communication. A router and a switch are some examples of such devices.
A data communication device associates a particular data transfer with a session. A session has several attributes, including a session identifier. Within a data communication device, a session is uniquely associated with an application or an instance thereof that is the recipient of the data.
Different applications exhibit different data communication behaviors. For example, some applications require continuous data transfers, others use data communications sporadically, while some others use data communications in bursts. The manner in which an application performs data communications affects the application's performance. For example, the increasing use of Internet by large numbers of people using web services with frequent small amounts of data, for example, voice over IP (VOIP) or interactive video teleconferencing, has resulted in poor data communication performance in such services. This poor performance manifests itself as undesirably long latencies, dropped packets, and lower than acceptable bandwidth, resulting in poor quality VOIP and video teleconferencing sessions.
Furthermore, when applications of differing data communication behaviors utilize a common channel through a data communication device, they affect each others' performance. For example, a video streaming application, which uses significant and continuous data transfers, can cause sluggish performance in an email application, which shares an internet connection with the streaming application via a common router. A malicious application can also attack a data communication device by flooding the data communication channel at the detriment of other applications that use the data communication channel through the device.